package t20211204;

/**
 * @Author: DengJia
 * @Date: 2021/12/4 20:46
 * @Description: 使用 .this
 */

public class DotThis {
    void f() {
        System.out.println("DotThis类的f()方法");
    }

    public class Inner {
        public DotThis outer() {
            // 直接使用.this将返回内部类的对象
            return DotThis.this;
        }
    }

    public Inner inner() {
        return new Inner();
    }

    public static void main(String[] args) {
        DotThis dt = new DotThis();
        Inner dti = dt.inner();
        // 外部类直接访问f()方法
        dt.f();
        // 内部类获取外部类，再调取f()方法
        dti.outer().f();
    }
}

class DotNew {
    public class Inner {

    }

    public static void main(String[] args) {
        DotNew dn = new DotNew();
        // 在拥有外部类对象之前是不可能创建内部类对象的
        // 因为内部类对象会暗自连接到创建它的外部类对象上去
        Inner dni = dn.new Inner();
    }
}
